#!/bin/bash

# ========================================================
# 脚本名称: WPS Office 自动化管理工具 (wps-ultimate-manager.sh)
# 版本: 2.1
# 作者: AutoScript Generator
# 创建日期: $(date +%Y-%m-%d)
# 描述:
#   本脚本提供 WPS Office 的全生命周期管理功能，包含：
#   - 智能版本检测安装
#   - 字体依赖自动化处理
#   - 系统集成与清理
# 主要功能:
#   ✓ 自动识别目录下最新版 WPS DEB 安装包
#   ✓ 一键式依赖解决（微软字体/Noto字体/符号字体）
#   ✓ 离线字体缓存机制
#   ✓ 系统级字体目录管理
#   ✓ 完善的错误处理与日志反馈
# 使用语法:
#   sudo ./wps-ultimate-manager.sh install    # 安装/更新
#   sudo ./wps-ultimate-manager.sh uninstall  # 完全卸载
# 注意事项:
#   1. 需要 root 权限执行
#   2. 首次安装需网络连接下载字体
#   3. 建议在图形界面注销后重新登录以生效字体
# 版权协议: GPL-3.0
# ========================================================

set -e

# -------------------------- 配置区块 --------------------------
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)    # 脚本根目录
FONTS_REPO="https://github.com/iamdh4/ttf-wps-fonts/archive/refs/heads/master.zip"
FONTS_ZIP="$SCRIPT_DIR/.wps-fonts-cache.zip" # 隐藏式字体缓存
FONTS_DIR="/usr/share/fonts/wps-office"      # 系统字体集成路径
# ------------------------------------------------------------

# 查找最新 DEB 包（带版本号验证）
find_latest_deb() {
    local deb_files=("$SCRIPT_DIR"/wps-office_*_amd64.deb)
    if [ ${#deb_files[@]} -eq 0 ]; then
        echo "错误: 在 $SCRIPT_DIR 目录下未找到 wps-office_*_amd64.deb 文件"
        exit 1
    fi

    # 使用版本号排序（支持多级版本号）
    local latest_deb=$(ls -v "$SCRIPT_DIR"/wps-office_*_amd64.deb 2>/dev/null | tail -n1)

    # 验证文件名格式
    if [[ ! $latest_deb =~ wps-office_[0-9\.]+_amd64\.deb ]]; then
        echo "错误: 检测到无效的 DEB 文件名格式: $latest_deb"
        exit 1
    fi

    echo "$latest_deb"
}

download_fonts() {
    # 如果本地已有字体包则跳过下载
    if [ -f "$FONTS_ZIP" ]; then
        echo "检测到本地字体缓存: $FONTS_ZIP"
        return 0
    fi

    echo "正在下载 WPS 符号字体..."
    if ! wget "$FONTS_REPO" -O "$FONTS_ZIP"; then
        echo "错误: 字体下载失败，请检查网络连接"
        rm -f "$FONTS_ZIP"  # 删除可能损坏的临时文件
        exit 1
    fi
}

install_fonts() {
    local temp_fonts=$(mktemp -d)

    # 解压字体包
    if ! unzip "$FONTS_ZIP" -d "$temp_fonts"; then
        echo "错误: 字体解压失败，可能文件损坏，请删除 $FONTS_ZIP 后重试"
        rm -rf "$temp_fonts"
        exit 1
    fi

    # 安装字体
    sudo mkdir -p "$FONTS_DIR"
    sudo cp "$temp_fonts"/ttf-wps-fonts-master/*.ttf "$FONTS_DIR"
    sudo chmod 644 "$FONTS_DIR"/*
    sudo fc-cache -vf

    rm -rf "$temp_fonts"
}

install_wps() {
    # 预配置微软字体协议
    sudo debconf-set-selections <<EOF
ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true
EOF

    # 安装系统依赖
    echo "安装系统依赖..."
    sudo apt-get update
    sudo apt-get install -y unzip wget fonts-noto fonts-symbola ttf-mscorefonts-installer

    # 获取并验证 DEB 包
    local WPS_DEB=$(find_latest_deb)
    echo "正在安装 WPS 版本: $(basename "$WPS_DEB")"

    # 安装 WPS
    sudo dpkg -i "$WPS_DEB" || true
    sudo apt-get install -f -y

    # 处理字体
    download_fonts
    install_fonts

    echo "安装完成！建议重启系统以确保字体生效。"
}

uninstall_wps() {
    echo "正在卸载 WPS Office..."
    sudo dpkg -r wps-office

    echo "正在移除字体文件..."
    sudo rm -rf "$FONTS_DIR"
    sudo fc-cache -vf

    echo "卸载完成！(注：本地字体缓存 $FONTS_ZIP 仍保留)"
}

# 主逻辑
case "$1" in
    install)
        install_wps
        ;;
    uninstall)
        uninstall_wps
        ;;
    *)
        echo "用法: $0 {install|uninstall}"
        exit 1
        ;;
esac

exit 0
